package com.jxx.algorithm.leetcode.difficult;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author LitchiShell
 * @description: 寻找两个正序数组的中位数：给定两个大小分别为 m 和 n 的正序（从小到大）数组nums1 和nums2。
 * 请你找出并返回这两个正序数组的 中位数 。
 * 算法的时间复杂度应该为 O(log (m+n)) 。
 * 来源：力扣（LeetCode）
 * @create 2021-11-28
 */
public class Solution01 {
    public static void main(String[] args) {
        int[] nums1 = {1,2};
        int[] nums2 = new int[]{3,4};
        double medianSortedArrays = findMedianSortedArrays(nums1, nums2);
        System.out.println(medianSortedArrays);
    }

    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        ArrayList<Integer> ints = new ArrayList<>();
        for (int i : nums1) {
            ints.add(i);
        }
        for (int i : nums2) {
            ints.add(i);
        }
        List<Integer> collect = ints.stream()
                .sorted(Integer::compareTo)
                .collect(Collectors.toList());
        int size = collect.size();
        if (size % 2 == 0) {
            return (collect.get(size/2) + collect.get(size/2-1)) / 2.0;
        } else {
            return collect.get(size/2);
        }
    }
}
